package user_models

import (
	"gorm.io/gorm"
	"yim_server/common/models"
)

// UserFriendModel 好友表
type UserFriendModel struct {
	models.Model
	SendUserID     uint      `json:"sendUserId"`                     // 发起验证用户
	SendUserModel  UserModel `gorm:"foreignKey:SendUserID" json:"-"` // 发起验证方
	RevUserID      uint      `json:"revUserId"`                      // 接受验证用户
	RevUserModel   UserModel `gorm:"foreignKey:RevUserID" json:"-"`  // 接收验证方
	SendUserNotice string    `gorm:"size:128" json:"sendUserNotice"` // 发起验证方备注
	RevUserNotice  string    `gorm:"size:128" json:"revUserNotice"`  // 接收验证方备注
}

// IsFriend 判断是否为好友
/*
 * @Description: 判断是否为好友
 * @ A -> B A 发起添加B的好友请求
 * @ SendUserNotice 是 A对B的好友备注
 * @ RevUserNotice 是  B对A的好友备注
 */
func (uf *UserFriendModel) IsFriend(db *gorm.DB, A, B uint) bool {
	err := db.Take(&uf, "(send_user_id = ? AND rev_user_id = ?) OR (send_user_id = ? AND rev_user_id = ?)", A, B, B, A).Error
	if err == nil {
		return true
	}
	return false
}

// GetUserNotice 获取用户备注
func (uf *UserFriendModel) GetUserNotice(userID uint) string {
	// 判断备注
	if userID == uf.SendUserID {
		// 如果我是发起方
		return uf.SendUserNotice
	}
	if userID == uf.RevUserID {
		// 如果我是接收方
		return uf.RevUserNotice
	}
	return ""
}
